package br.com.montezuma.despesas.models;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import br.com.caelum.vraptor.Resource;
/**
 * <pre>
 * @author : David Montezuma          
 * Purpose      :  Representation of Colaborador.
 * Amendment History                                                                
 * Date - Name - Description                              
 * 20/05/2012 - David Montezuma - initial version.
 * 
 * Copyright 2012 Montezuma Software
 * </pre>
 */
@Resource
@Entity
public class Colaborador {
	@Id
	@GeneratedValue
	private long id;
	@Column(length=50,nullable=false)
	private String usuario;
	@Column(length=50,nullable=false)
	private String senha;
	@Column(length=150,nullable=false)
	private String nome;
	@Column(length=100,nullable=false)
	private String email;
	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="escritorio_id", referencedColumnName="id")
	private Escritorio escritorio;
	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="supervisor_id", referencedColumnName="id", nullable=true)
	private Colaborador supervisor;
	@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
	@JoinColumn(name="cargo_id", referencedColumnName="id",nullable=false)
	private Cargo cargo;
	@Column(length=1,nullable=false)
	boolean administrador;

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}
	/**
	 * @return the usuario
	 */
	public String getUsuario() {
		return usuario;
	}
	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	/**
	 * @return the senha
	 */
	public String getSenha() {
		return senha;
	}
	/**
	 * @param senha the senha to set
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}
	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}
	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	/**
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}
	/**
	 * @param email the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}
	/**
	 * @return the escritorio
	 */
	public Escritorio getEscritorio() {
		return escritorio;
	}
	/**
	 * @param escritorio the escritorio to set
	 */
	public void setEscritorio(Escritorio escritorio) {
		this.escritorio = escritorio;
	}
	/**
	 * @return the supervisor
	 */
	public Colaborador getSupervisor() {
		return supervisor;
	}
	/**
	 * @param supervisor the supervisor to set
	 */
	public void setSupervisor(Colaborador supervisor) {
		this.supervisor = supervisor;
	}
	/**
	 * @return the cargo
	 */
	public Cargo getCargo() {
		return cargo;
	}
	/**
	 * @param cargo the cargo to set
	 */
	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}
	/**
	 * @return the administrador
	 */
	public boolean isAdministrador() {
		return administrador;
	}
	/**
	 * @param administrador the administrador to set
	 */
	public void setAdministrador(boolean administrador) {
		this.administrador = administrador;
	}
	
}
